Skip to content

Conversation

mheon
Copy link
Member

@mheon mheon commented Sep 4, 2025

Add a new directory, which I'm currently dubbing "Features", in which will live design documents - descriptions of Podman features that will be implemented or are being implemented. Add a README and template to this directory to make the purpose clear and enable easy addition of new design documents.

This includes our first upstream design document, for a potential Conmon rewrite we're calling Conmon v3.

Does this PR introduce a user-facing change?

NONE

@openshift-ci openshift-ci bot added release-note-none approved Indicates a PR has been approved by an approver from all required OWNERS files. labels Sep 4, 2025
@mheon
Copy link
Member Author

mheon commented Sep 4, 2025

@containers/podman-maintainers Opinions on what to name the directory for the design docs would be welcome

Copy link
Member

@Luap99 Luap99 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about moving this under contrib/ instead of its own top level dir?
And personally I would prefer lower case features as directory name.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be its own PR to allow for discussions unrelated to adding the directory + template here and not intermix them?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@Luap99
Copy link
Member

Luap99 commented Sep 4, 2025

Maybe just design-docs as directory name as well? Might be more obvious naming wise what is in there.
And I guess dropping a link in CONTRIBUTING.md and/or the global README might be a good idea to make it discoverable for normal end users.

@mheon mheon added the No New Tests Allow PR to proceed without adding regression tests label Sep 4, 2025
@mheon mheon force-pushed the add_design_doc_conmonv3 branch from e56d4bd to c6f4d88 Compare September 4, 2025 12:25
@baude
Copy link
Member

baude commented Sep 4, 2025

i prefer design-docs for a directory name because we could theoretically have things that are not features (podman 6 HLD) as well as certain bugs requiring a design doc if nasty enough?

What considerations are there for the project if this is done?
How difficult of a task is this expected to be?

### **Use case**
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

plural


### **Use case**

Short description of intended use of the feature one complete.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"one or more use cases"

When is this feature expected to be completed here?
Are there hard deadlines to be aware of?

### **Github Link(s)**
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think a jira link here is still valid assuming it is public.


### **Github Link(s)**

A list of links to relevant Github issues to help justify this work.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

justifying the work is not the purpose of the links imho. they are to add context or history to the work.

A list of links to relevant Github issues to help justify this work.

### **Stakeholders**

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lets consider a checkbox approach ?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Who would we want here - Users, Maintainers (maybe split by project), Podman Desktop, CRI-O, Other... Anything I'm missing?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PD, CRIO, C/S, C/I, Common, Skopeo, Buildah, NV/AV, and other?

@@ -0,0 +1,56 @@
# Change Request

### **Short Summary**
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think you jumped from one # to three?


How should the feature be implemented?
What considerations are there for the project if this is done?
How difficult of a task is this expected to be?
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i dont think this is important (here)

@mheon mheon force-pushed the add_design_doc_conmonv3 branch from c6f4d88 to 564d0d4 Compare September 4, 2025 13:26
Copy link

[NON-BLOCKING] Packit jobs failed. @containers/packit-build please check. Everyone else, feel free to ignore.

@mheon mheon force-pushed the add_design_doc_conmonv3 branch 2 times, most recently from a937aeb to e97e29d Compare September 4, 2025 14:16
## **Test Descriptions (Optional):**

<!--
How will this feature be tested?
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
How will this feature be tested?
How will this feature be tested? Will new tests be added and to what part of the test suites? Do the tests require any change to our CI or base images?

### **CLI**

<!--
Will there be any impact to the CLI?
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Will there be any impact to the CLI?
Will there be any impact to the CLI? Please consider showing examples of mocked-up output.


This directory contains design information for Podman features that are being worked on or will be worked on in the future.
All documents in this directory should be based on the [template](./TEMPLATE.md) provided.
Major features should be preceded by design documents.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Major features should be preceded by design documents.
Major features should be preceded by design documents.

All documents in this directory should be based on the [template](./TEMPLATE.md) provided.
Major features should be preceded by design documents.
Discussion on new features should take place on the pull request to add the design document.
While we welcome feedback on existing design documents, anything that has already committed likely has work ongoing to implement it, and as such major design changes are unlikely to be possible.
Copy link
Member

@baude baude Sep 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how should 'committed' be defined here? I'm thinking merged? And speaking of which, whats the policy of 'this doci s good'? Today, that's me as architect. im thinking it needs to be core maintainers but not ALL of them.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thought would be three core maintainers when authored by a non-core maintainer. And two when it is. probably should cross ref this in GOVERNANCE.md as well

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Committed == merged, I'll clarify. I think we probably want at least 1 core maintainer to approve (maybe 2) plus at least a decent number of maintainers of the repo in question?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would say at least one maintainer of the repo in question should approve and one core maintainer, bigger changes should be reviewed from ore people though. Depends on the complexity.

I think one important thing I would say here though is that the PR should stay open for at least a week to give time for others to actually provide feedback in case someone likes to object or has better ideas.

Also I think we need to set expectations then, i.e. a maintainer should not be allowed to block the merge of a PR implementing the functionality as described in a design doc if said design docs was approved by other maintainers. The time to object is at the design phase. Of course there are still valid reason to block implementation wise if it has major issues or doesn't do it as was described in the design doc.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we growing to be such a big project that we need to be building heavy formal processes, with assignment and approvals and deadlines and specific processes to change our minds? (I don’t know, maybe we are.)

As a possible alternative, I’d offer the w3c “explainer” practice, which focus more on “what we want to build, why, and we think how it is going to be used”, as a consensus building mechanism (where, in practice, some explainers end up not being fully implemented, and features may arrive without explainers) — rather than primarily an approval / gating / permission mechanism.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a fair point, I think if we want to welcome non RH maintainers and invite outsiders to participate then I think we should define some form of rules for clear expectations. I don't think they must be that strict certainly.

For now I see this primarily as a way to get our internal design docs public instead and have a feedback period.

Discussion on the feature will occur in the pull request.
Merging the pull request will constitute approval by project maintainers to proceed with implementation work.
-->

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need an assignee field to make sure who works on this implementation if it is accepted? Doesn't mean anyone must work on it ASAP but I think we need to have a OWNER who is reasonable to get it completed.

And then I guess we need a completed field? Or we git rm the doc instead? I think removing the docs out of the repo makes sense to ensure only active stuff is visible in the repo.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO, git rm the doc. It's still in the history if we need it, no reason to clutter.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

when would it be removed? once the feature is merged, released? I think merged?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thinking about this more ... suppose we have a design doc as a PR, and the person starts working on it while its in review (common practice). And it takes some time to get the PR reviewed and merged, and then immediately the PR for the actual implementation comes in. As soon as that is merged, we are saying git rm. Are we OK with such a short lifespan?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would delete on feature merge yes. I mean it is in the git history forever for anyone to look it up so I don't think that is a problem.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we're really concerned, maybe provide a list of removed docs and the commit that removed them in the README?

Can include maintainers, users, but also projects using Podman as a dependency (e.g. Podman Desktop).
-->

## **Impacts**
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Special considerations for podman-remote / podman machine? I think that might be an aspect that’s easy to overlook, and these kinds of templates work well as reminders.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i also was thinking about this. And I decided to pass it but given that you are mentioning it, i think its probably prudent and I wasnt so far off base in my original thinking. So agree

All documents in this directory should be based on the [template](./TEMPLATE.md) provided.
Major features should be preceded by design documents.
Discussion on new features should take place on the pull request to add the design document.
While we welcome feedback on existing design documents, anything that has already committed likely has work ongoing to implement it, and as such major design changes are unlikely to be possible.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we growing to be such a big project that we need to be building heavy formal processes, with assignment and approvals and deadlines and specific processes to change our minds? (I don’t know, maybe we are.)

As a possible alternative, I’d offer the w3c “explainer” practice, which focus more on “what we want to build, why, and we think how it is going to be used”, as a consensus building mechanism (where, in practice, some explainers end up not being fully implemented, and features may arrive without explainers) — rather than primarily an approval / gating / permission mechanism.

@mheon
Copy link
Member Author

mheon commented Sep 4, 2025

@mtrmac I don't think we want to make this a mandatory part of the process, but a way for large features to get feedback before we go ahead... But I do think we're getting very technical about this

This directory contains design information for Podman features that are being worked on or will be worked on in the future.
All documents in this directory should be based on the [template](./TEMPLATE.md) provided.
Major features should be preceded by design documents.
Discussion on new features should take place on the pull request to add the design document.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the overall idea that there is a single public-place listing all the features we are working on. I'm also +1 for general discussions about the ideas in the PR, but for any future design docs or architecture document, I think we should go with google docs and link the doc in the feature.md. It is much easier to comment/suggest/edit the google doc than collaborating on .md file in PR.

If that's how you think this process should work, maybe mention it explicitly in the template.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can't do google docs that are completely open for public comment, so I think we want to collaborate on Github for these. Though I think it's perfectly fine if we do a private Google Doc for an initial pass and then propose the version that has already been discussed here.

@baude
Copy link
Member

baude commented Sep 5, 2025

@mtrmac I don't think we want to make this a mandatory part of the process, but a way for large features to get feedback before we go ahead... But I do think we're getting very technical about this

probably natural. we are deciding process on the fly. and heck, its a pr review

@baude
Copy link
Member

baude commented Sep 9, 2025

@mheon i would like to post the podman 7 hld asap. are we at a point where this can be merged? did we come to terms with design document life spans and the rules for git rm ?

@mheon mheon force-pushed the add_design_doc_conmonv3 branch from e97e29d to 3508308 Compare September 9, 2025 17:16
@mheon
Copy link
Member Author

mheon commented Sep 9, 2025

I stripped the governance bits, which weren't ready, out and repushed. I think we're good to merge this as-is.

@mheon mheon force-pushed the add_design_doc_conmonv3 branch from 3508308 to 2f57d35 Compare September 9, 2025 17:17
@Luap99
Copy link
Member

Luap99 commented Sep 9, 2025

I believe the point about naming this design-docs instead of features is still open but I don't care much

@baude
Copy link
Member

baude commented Sep 9, 2025

I believe the point about naming this design-docs instead of features is still open but I don't care much

i prefer design-docs as well.

Add a new directory, which I'm currently dubbing "Features", in
which will live design documents - descriptions of Podman
features that will be implemented or are being implemented.
Add a README and template to this directory to make the purpose
clear and enable easy addition of new design documents.

Signed-off-by: Matt Heon <[email protected]>
@mheon mheon force-pushed the add_design_doc_conmonv3 branch from 2f57d35 to 5b10b51 Compare September 9, 2025 22:12
@mheon
Copy link
Member Author

mheon commented Sep 9, 2025

Done

Copy link
Member

@Luap99 Luap99 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link
Member

@giuseppe giuseppe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link
Contributor

openshift-ci bot commented Sep 10, 2025

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: giuseppe, Luap99, mheon

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:
  • OWNERS [Luap99,giuseppe,mheon]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@baude
Copy link
Member

baude commented Sep 10, 2025

/lgtm

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Sep 10, 2025
@openshift-merge-bot openshift-merge-bot bot merged commit e03a5d2 into containers:main Sep 10, 2025
40 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. lgtm Indicates that a PR is ready to be merged. No New Tests Allow PR to proceed without adding regression tests release-note-none
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants